package main

import "fmt"

// 定义一个父"类"结构体
type person struct {
	name string
	age  int
}

// 定义一个子"类"结构体
type Student struct {
	person        //匿名变量，继承的作用
	school string //子类自己的属性字段
}

func main() {
	p2 := person{"小黄", 19}

	fmt.Println(p2.name)

	p1 := Student{
		person: person{"小王", 18},
		school: "清华",
	}

	//这是通过子类的对象调用父类再点名字。
	fmt.Println(p1.person.name)
	//模拟聚合
	/*type C struct {
		age1 int

	}

	type D struct {
		c C
	}*/
	//这时d就不能直接访问c中的属性  需要d.c  .xx访问

	//这里用的提升字段 （模拟继承）
	//对于student来说person是匿名字段 person中的name、age为提升字段
	//提升字段可以通过名字直接访问，不需要再用结构体
	fmt.Println(p1.name)

}
